Batch input with table control

Hi,
i have a problem with the batch input of picking window in vl02n transaction. I need to select a row of the bottom table but i don't know how many lines ara available in the program(different than the number of lines i can see) and it's possible that i will have to click the page down button, but i don't know when do this.
I can't find any positioning option or similar.
Any suggestion for doing this?
Thanks

Hi ,
pls use the bi-recorder (ta: shdb)
here's an example for positioning:
*positioning
perform bdc_dynpro      using 'SAPMF02D' '0360'.
perform bdc_field       using 'BDC_CURSOR' 'KNVK-NAME1(03)'.
perform bdc_field       using 'BDC_OKCODE' '=LSDP'.
*page down
perform bdc_field       using 'BDC_CURSOR' 'KNVK-NAMEV(04)'.
perform bdc_field       using 'BDC_OKCODE' '=P+'.
regards Andreas

Similar Messages

  • Sort up and sort Down push buttons in module pool with table control wizard

    hi,
    i have created 2 buttons for Sort up and sort Down push buttons in module pool with table control wizard
    please any one can help me.
    regards

    Hi
    Following code is to enable and disable the tbl control using two buttons. Just alter the code and for each button write the sort code.
    REPORT  YJAN27_SCREEN                                               .
    TABLES: SFLIGHT, YFLIGHT_28.
    TYPES: BEGIN OF struct1,
          carrid like sflight-carrid,
          connid like sflight-connid,
          fldate like sflight-fldate,
           END OF struct1.
    CONTROLS TBL1 TYPE TABLEVIEW USING SCREEN 2700.
    DATA: OK_CODE LIKE SY-UCOMM,
          CARRID LIKE SFLIGHT-CARRID,                                    "cols in tbl ctrl
          CONNID LIKE SFLIGHT-CONNID,
          FLDATE LIKE SFLIGHT-FLDATE,
          itab TYPE TABLE OF STRUCT1 WITH HEADER LINE,
          cols like line of TBL1-COLS,
          FLAG TYPE I.
    FLAG = 1.
    CALL SCREEN 2700.
    *&      Module  STATUS_2700  OUTPUT
    *       text
    MODULE STATUS_2700 OUTPUT.
      SET PF-STATUS 'BACK'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_2700  OUTPUT
    *&      Module  USER_COMMAND_2700  INPUT
    *       text
    MODULE USER_COMMAND_2700 INPUT.
    OK_CODE = SY-UCOMM.
    CASE OK_CODE.
      WHEN 'BACK'.
        LEAVE PROGRAM.
      WHEN 'DIS'.                                                         "write code for sort up
        loop AT TBL1-COLS INTO COLS.
           COLS-SCREEN-INPUT = 0.
            MODIFY TBL1-COLS FROM COLS.
        ENDLOOP.
        FLAG = 2.
      WHEN 'ENA'.                                                       "write code for sort down
        loop AT TBL1-COLS INTO COLS.
            COLS-SCREEN-INPUT = 1.
            MODIFY TBL1-COLS FROM COLS.
        ENDLOOP.
        FLAG = 1.
    ENDCASE.
    ENDMODULE.                 " USER_COMMAND_2700  INPUT
    *&      Module  GET_DATA  OUTPUT
    *       text
    MODULE GET_DATA OUTPUT.
      select carrid connid fldate from SFLIGHT into table itab.
    ENDMODULE.                 " GET_DATA  OUTPUT
    *&      Module  POPULATE_TBL  OUTPUT
    *       text
    MODULE POPULATE_TBL OUTPUT.
        MOVE-CORRESPONDING ITAB TO SFLIGHT.
    ENDMODULE.                 " POPULATE_TBL  OUTPUT
    *&      Module  CHANGE_SCREEN  OUTPUT
    *       text
    MODULE CHANGE_SCREEN OUTPUT.    " use this module if you want to hide the other button
    CASE FLAG.
      WHEN 1.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_ENA'.
            SCREEN-INVISIBLE = 1.
             MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_DIS'.
            SCREEN-INVISIBLE = 0.
             MODIFY SCREEN.
          ENDIF.
       ENDLOOP.
      WHEN 2.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_DIS'.
            SCREEN-INVISIBLE = 1.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
        LOOP AT SCREEN.
          IF SCREEN-NAME = 'B_ENA'.
            SCREEN-INVISIBLE = 0.
             MODIFY SCREEN.
          ENDIF.
       ENDLOOP.
    ENDCASE.
    ENDMODULE.                 " CHANGE_SCREEN  OUTPUT
    PROCESS BEFORE OUTPUT.
    MODULE STATUS_2700.
    MODULE CHANGE_SCREEN.     " use this if you want to display one button at a time
    MODULE GET_DATA.
    loop at itab WITH control TBL1.
        MODULE POPULATE_TBL.       " populate tbl ctrl
    endloop.
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_2700.    " do the sort operations
    loop at itab.
      endloop.
    Hope this helps
    Regards,
    Jayanthi.K

  • Strange issue with table control in dialog programming! Please help!

    Hello everyone:
                I have a table control on screen painter and I have atleast 10 rows on display when user calls the screen. If I have 15 columns then ofcourse user has to scroll down to see extra rows. I have line selection set to "single" for table control so that user can select only one row at a time. This works fine when user does not have to scroll to see extra rows. It is tough for me to explain i.e., if the table control displays 10 rows when the screen opens up then they can only select single row at a time (rows 1 -10). For example user selected row 7 and now they scroll down to see extra rows (for example 13) then it lets them select row 13 also even though I set line selection to "single" in the properties for table control! They should be able to select only one row at a time. Is this some limitation with table control in SAP? Please give me any information you have.
    Thanks.
    Mithun

    Hi,
    As you suspected, this is a limitation in the table control.  You need to take care of the single-selection functionality yourself except for the rows that are actually being displayed.  See [Note 588284|https://service.sap.com/sap/support/notes/588284] for the official SAP explanation.
    Regards,
    Jamie

  • Batch input with objects

    Hi,
    Exists a standard class to develop a batch input????
    Any ideas???
    Is it possible to create a batch input with objects??

    Hi there
    Why not
    just define your class in the normal way
    decide what variables you need to pass
    in the methods of your class call the fm modules bdc open, bdc dynpro etc etc.
    Incidently the following include will have a decent amount of code for the BDC bits.
    include bdcrecx1.
    A good way is to start sm35 to record what you are doing on the screen. When you've finished  go to your recording in SM35 and click on CREATE PROGRAM - it will create most of the code for you including the screen fields -- you'll need to edit a bit of course as you don't need everything that will be shown.
    Debugging in the CREATE PROGRAM might show you a decent generic way of generating BDC's which you could easily do via a class.
    Note however using BDC's is the LEAST PREFRERRED WAY of performing work and should only be used as a LAST RESORT if there really is no other way. A lot of new BAPI's and Classes are now available which can do away with the need for BDC's  in most cases.
    job done.
    cheers
    jimbo

  • ABAP HR How to create infotype with table control in it like Infotype 0008

    Hi Experts.
    I need help from u guys. My client requirement is to create custom infotype just like 0008 infotype which contain table control to save amount and wage types. I try to create infotype with table control using PM01, but that table control is in display mode only, i almost search every where to create custom infotype with table control but what ever threads in forum all are they unanswered and most of the threads for creating infotype. But i already done with infotype , but my main problem is table control.
    If any one have some suggestion for this please share with me.
    <removed by moderator> i am looking for positive reply.
    Edited by: Thomas Zloch on Aug 30, 2011 12:54 PM

    Hi
    I've created several infotypes with a Table Control and it is always the same story. You have to create a custom Z table to store the Table Control data (if you can have unlimited records), so in the PSXXXX structure you need to add a TABNR field to link the PAXXXX table and the Z one, just like the type table OM infotypes.
    Then in your code you have to control every possible operation, INS, MOD, DEL... and update the Z table accordingly (the standard code won't do that)
    If your TC fields appear in display mode, take a look at the Groups 1 and 3 in your fields, the must be set with the usual values for a PA infotype.
    If you have more questions, just ask,
    Regards

  • How can I work lsmw with table control using mm01 appl?

    Hi
    How can I work lsmw with table control using mm01 appl?
    Is it difefrent the way we handle table control in BDC?
    Thank You

    Hi
    How can I work lsmw with table control using mm01 appl?
    Is it difefrent the way we handle table control in BDC?
    Thank You

  • Problem with Table control lines

    Hi Friends,
    This is the problem with table control lines:
    I have screen with table control and I would like change the table control lines dynamicaly.
    Exp:
    In my PBO the Internal table which I am using to loop the TC is havig 7 records and its displayed with 7 records, now I have added one more record into my ITAB and now ITAB is having 8 records, when I am looping this ITAB with TC its taking the TC lines 7 only.
    here is the code:
    Initial values in gt_scr400 = 8
    Initial values in tc_scr400 = 8
    Now added one more recor into gt_scr400 , now gt_scr400  = 9.
      LOOP AT   gt_scr400
           INTO wa_scr400
           WITH CONTROL tc_scr400
           CURSOR tc_scr400-current_line.
      ENDLOOP.
    I have used this logic :
      DESCRIBE TABLE gt_scr400 LINES g_rec_300 .
      tc_scr300-lines = g_rec_300.
    but its not modifying the lines in my table control.
    How to change the TC lines based on ITAB total records.
    Thanks,
    Sridhar

    there is a field in TableViewName-xxx
    don't remember the exact field name for (total no of records)
    you can check it in debug.  when you add records in Internal table, u need to modify this field which is set at the first time when table control is populated.

  • How to create bdc with table control

    hi all.
    please some body tell me how to create bdc with table control
    or suggest any www with screen shots
    thanks in advance ,
    aparna

    Hi AParna,
    Its very Simple.
    ALl you have to do is set up a counter based on the number of lines in the tabke. when the counter reaches the number of lines in the table hit the next page button which is at the top of every screen in SAP.
    Please refer to the following BDC program I had developed using Table control,
    this is for ME01 transaction.
      LOOP AT T_EORD_HED.
        SELECT SINGLE * FROM MARA WHERE MATNR = T_EORD_HED-MATNR.
        IF SY-SUBRC = 0.
          PERFORM BDC_DYNPRO      USING 'SAPLMEOR' '0200'.
          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                        'EORD-MATNR'.
          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '/00'.
          PERFORM BDC_FIELD       USING 'EORD-MATNR'
                                        T_EORD_HED-MATNR.       "'58335'.
          PERFORM BDC_FIELD       USING 'EORD-WERKS'
                                        T_EORD_HED-WERKS.       "'0253'.
          L_COUNT = 1.
          LOOP AT T_EORD WHERE MATNR = T_EORD_HED-MATNR
                           AND WERKS = T_EORD_HED-WERKS.
            SELECT SINGLE * FROM LFA1 WHERE LIFNR = T_EORD-LIFNR.
            IF SY-SUBRC = 0.
    * Look into the if condition below
              IF L_COUNT = 010.
                L_COUNT = 1.
                PERFORM BDC_DYNPRO      USING 'SAPLMEOR' '0205'.
                PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'EORD-MATNR'.
                PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                       '=NS'.
                L_COUNT = L_COUNT + 1.
              ENDIF.
              PERFORM BDC_DYNPRO      USING 'SAPLMEOR' '0205'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'EORD-AUTET(01)'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              CONCATENATE 'EORD-VDATU' '(' L_COUNT ')' INTO OPR_FIELD.
              WRITE SY-DATUM TO T_EORD-VDATU.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            T_EORD-VDATU.
              CONCATENATE 'EORD-BDATU' '(' L_COUNT ')' INTO OPR_FIELD.
              WRITE T_EORD-BDATU TO V_BDATU.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            V_BDATU.
              CONCATENATE 'EORD-LIFNR' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            T_EORD-LIFNR.
              CONCATENATE 'EORD-EKORG' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            '0001'.
              CONCATENATE 'EORD-RESWK' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            T_EORD-RESWK.
              WRITE T_EORD-MEINS TO V_MEINS.
              CONCATENATE 'EORD-MEINS' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            V_MEINS.
    *          CONCATENATE 'EORD-EBELN' '(' L_COUNT ')' INTO OPR_FIELD.
    *          PERFORM BDC_FIELD       USING 'OPR_FIELD'
    *                                        T_EORD-EBELN.
              CONCATENATE 'EORD-EBELP' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            T_EORD-EBELP.
              IF T_EORD-FLIFN NE SPACE OR T_EORD-FRESW NE SPACE OR
                 T_EORD-FEBEL NE SPACE.
                CONCATENATE 'RM06W-FESKZ' '(' L_COUNT ')' INTO OPR1_FIELD.
                PERFORM BDC_FIELD       USING OPR1_FIELD
                                              'X'.
              ENDIF.
              IF T_EORD-NOTKZ <> ''.
                CONCATENATE 'EORD-NOTKZ' '(' L_COUNT ')' INTO OPR_FIELD.
                PERFORM BDC_FIELD       USING OPR_FIELD
                                              'X'.
              ENDIF.
              CONCATENATE 'EORD-AUTET' '(' L_COUNT ')' INTO OPR_FIELD.
              PERFORM BDC_FIELD       USING OPR_FIELD
                                            T_EORD-AUTET.
              L_COUNT = L_COUNT + 1.
            ENDIF.
          ENDLOOP.
          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                        'EORD-MATNR'.
          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '=BU'.
          CALL TRANSACTION 'ME01' USING I_BDCDATA
                        MODE UP_MODE
    *                     optIONS  FROM l_opt
                        MESSAGES INTO I_BDCMSGCOLL.
          PERFORM FORMAT_OUTPUT.
        ENDIF.
      ENDLOOP.

  • BDC program for rebate with table controls

    Hi Friends,
    Iam Doing  bdc program for Rebate(TCODE VBO1) with table controls..
    can u give the solutions for table controls...
    if anybody having the code..please send me..
    Thanks & Advance,
    sampath

    hi,
    check this example it may help you.
    REPORT  ZSR_BDC_TBCTRL
            NO STANDARD PAGE HEADING LINE-SIZE 255.
    TABLES : RF02K,LFA1,LFBK.
    DATA : BEGIN OF IT_VEN OCCURS 0,
          LIFNR LIKE RF02K-LIFNR,
          KTOKK LIKE RF02K-KTOKK,
          NAME1 LIKE LFA1-NAME1,
          SORTL LIKE LFA1-SORTL,
          LAND1 LIKE LFA1-LAND1,
          SPRAS LIKE LFA1-SPRAS,
          BANKS(6) TYPE C,
          BANKL(17) TYPE C,
          BANKN(19) TYPE C,
          END OF IT_VEN.
    DATA : BEGIN OF BANKS OCCURS 0,
           BANKS LIKE LFBK-BANKS,
           END OF BANKS,
           BEGIN OF BANKL OCCURS 0,
           BANKL LIKE LFBK-BANKL,
           END OF BANKL,
           BEGIN OF BANKN OCCURS 0,
           BANKN LIKE LFBK-BANKN,
           END OF BANKN.
    DATA : FLD(20) TYPE C,
           CNT(2) TYPE N.
    DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    INCLUDE BDCRECX1.
    START-OF-SELECTION.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = 'Z:\sr.TXT'
       FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        DATA_TAB                      = IT_VEN
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      NO_AUTHORITY                  = 6
      UNKNOWN_ERROR                 = 7
      BAD_DATA_FORMAT               = 8
      HEADER_NOT_ALLOWED            = 9
      SEPARATOR_NOT_ALLOWED         = 10
      HEADER_TOO_LONG               = 11
      UNKNOWN_DP_ERROR              = 12
      ACCESS_DENIED                 = 13
      DP_OUT_OF_MEMORY              = 14
      DISK_FULL                     = 15
      DP_TIMEOUT                    = 16
      OTHERS                        = 17
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    PERFORM OPEN_GROUP.
    LOOP AT IT_VEN.
        REFRESH BDCDATA.
        REFRESH : BANKS,BANKL,BANKN..
        SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
        SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
        SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0100'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RF02K-KTOKK'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'RF02K-LIFNR'
                                  IT_VEN-LIFNR.
    PERFORM BDC_FIELD       USING 'RF02K-KTOKK'
                                  IT_VEN-KTOKK.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0110'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFA1-SPRAS'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'LFA1-NAME1'
                                  IT_VEN-NAME1.
    PERFORM BDC_FIELD       USING 'LFA1-SORTL'
                                  IT_VEN-SORTL.
    PERFORM BDC_FIELD       USING 'LFA1-LAND1'
                                  IT_VEN-LAND1.
    PERFORM BDC_FIELD       USING 'LFA1-SPRAS'
                                  IT_VEN-SPRAS.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0120'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFA1-KUNNR'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0130'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFBK-BANKN(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    *perform bdc_field       using 'LFBK-BANKS(01)'
                                 'DE'.
    *perform bdc_field       using 'LFBK-BANKS(02)'
                                 'DE'.
    *perform bdc_field       using 'LFBK-BANKL(01)'
                                 '10020030'.
    *perform bdc_field       using 'LFBK-BANKL(02)'
                                 '67270003'.
    *perform bdc_field       using 'LFBK-BANKN(01)'
                                 '12345'.
    *perform bdc_field       using 'LFBK-BANKN(02)'
                                 '66666'.
    MOVE 1 TO CNT.
        LOOP AT BANKS.
          CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKS-BANKS.
          CNT = CNT + 1.
        ENDLOOP.
        MOVE 1 TO CNT.
        LOOP AT BANKL.
          CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKL-BANKL.
          CNT = CNT + 1.
        ENDLOOP.
        MOVE 1 TO CNT.
        LOOP AT BANKN.
          CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKN-BANKN.
          CNT = CNT + 1.
        ENDLOOP.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0130'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFBK-BANKS(01)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM BDC_DYNPRO      USING 'SAPLSPO1' '0300'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=YES'.
    PERFORM BDC_TRANSACTION USING 'XK01'.
    ENDLOOP.
    PERFORM CLOSE_GROUP.&----
    *& Report  ZSR_BDC_TBCTRL
    REPORT  ZSR_BDC_TBCTRL
            NO STANDARD PAGE HEADING LINE-SIZE 255.
    TABLES : RF02K,LFA1,LFBK.
    DATA : BEGIN OF IT_VEN OCCURS 0,
          LIFNR LIKE RF02K-LIFNR,
          KTOKK LIKE RF02K-KTOKK,
          NAME1 LIKE LFA1-NAME1,
          SORTL LIKE LFA1-SORTL,
          LAND1 LIKE LFA1-LAND1,
          SPRAS LIKE LFA1-SPRAS,
          BANKS(6) TYPE C,
          BANKL(17) TYPE C,
          BANKN(19) TYPE C,
          END OF IT_VEN.
    DATA : BEGIN OF BANKS OCCURS 0,
           BANKS LIKE LFBK-BANKS,
           END OF BANKS,
           BEGIN OF BANKL OCCURS 0,
           BANKL LIKE LFBK-BANKL,
           END OF BANKL,
           BEGIN OF BANKN OCCURS 0,
           BANKN LIKE LFBK-BANKN,
           END OF BANKN.
    DATA : FLD(20) TYPE C,
           CNT(2) TYPE N.
    DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    INCLUDE BDCRECX1.
    START-OF-SELECTION.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = 'Z:\sr.TXT'
       FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        DATA_TAB                      = IT_VEN
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      NO_AUTHORITY                  = 6
      UNKNOWN_ERROR                 = 7
      BAD_DATA_FORMAT               = 8
      HEADER_NOT_ALLOWED            = 9
      SEPARATOR_NOT_ALLOWED         = 10
      HEADER_TOO_LONG               = 11
      UNKNOWN_DP_ERROR              = 12
      ACCESS_DENIED                 = 13
      DP_OUT_OF_MEMORY              = 14
      DISK_FULL                     = 15
      DP_TIMEOUT                    = 16
      OTHERS                        = 17
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    PERFORM OPEN_GROUP.
    LOOP AT IT_VEN.
        REFRESH BDCDATA.
        REFRESH : BANKS,BANKL,BANKN..
        SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
        SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
        SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0100'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RF02K-KTOKK'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'RF02K-LIFNR'
                                  IT_VEN-LIFNR.
    PERFORM BDC_FIELD       USING 'RF02K-KTOKK'
                                  IT_VEN-KTOKK.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0110'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFA1-SPRAS'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'LFA1-NAME1'
                                  IT_VEN-NAME1.
    PERFORM BDC_FIELD       USING 'LFA1-SORTL'
                                  IT_VEN-SORTL.
    PERFORM BDC_FIELD       USING 'LFA1-LAND1'
                                  IT_VEN-LAND1.
    PERFORM BDC_FIELD       USING 'LFA1-SPRAS'
                                  IT_VEN-SPRAS.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0120'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFA1-KUNNR'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0130'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFBK-BANKN(02)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    *perform bdc_field       using 'LFBK-BANKS(01)'
                                 'DE'.
    *perform bdc_field       using 'LFBK-BANKS(02)'
                                 'DE'.
    *perform bdc_field       using 'LFBK-BANKL(01)'
                                 '10020030'.
    *perform bdc_field       using 'LFBK-BANKL(02)'
                                 '67270003'.
    *perform bdc_field       using 'LFBK-BANKN(01)'
                                 '12345'.
    *perform bdc_field       using 'LFBK-BANKN(02)'
                                 '66666'.
    MOVE 1 TO CNT.
        LOOP AT BANKS.
          CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKS-BANKS.
          CNT = CNT + 1.
        ENDLOOP.
        MOVE 1 TO CNT.
        LOOP AT BANKL.
          CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKL-BANKL.
          CNT = CNT + 1.
        ENDLOOP.
        MOVE 1 TO CNT.
        LOOP AT BANKN.
          CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
          PERFORM BDC_FIELD USING FLD BANKN-BANKN.
          CNT = CNT + 1.
        ENDLOOP.
    PERFORM BDC_DYNPRO      USING 'SAPMF02K' '0130'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'LFBK-BANKS(01)'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM BDC_DYNPRO      USING 'SAPLSPO1' '0300'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=YES'.
    PERFORM BDC_TRANSACTION USING 'XK01'.
    ENDLOOP.
    PERFORM CLOSE_GROUP.

  • BDC With table Control

    Dear All .
    can you give me some idea how to do BDC with tbale Control . Any documentation on the same or some simple example .

    Handling Table Control in BDC
    An example abap program of handling Table Control during bdc programming.
    REPORT zmm_bdcp_purchaseorderkb02
           NO STANDARD PAGE HEADING LINE-SIZE 255.
                    Declaring internal tables                            *
    *-----Declaring line structure
    DATA : BEGIN OF it_dummy OCCURS 0,
             dummy(255) TYPE c,
           END OF it_dummy.
    *-----Internal table for line items
    DATA :  BEGIN OF it_idata OCCURS 0,
              ematn(18),      "Material Number.
              menge(13),      "Qyantity.
              netpr(11),      "Net Price.
              werks(4),       "Plant.
              ebelp(5),       "Item Number.
            END OF it_idata.
    *-----Deep structure for header data and line items
    DATA  :  BEGIN OF it_me21 OCCURS 0,
               lifnr(10),      "Vendor A/c No.
               bsart(4),       "A/c Type.
               bedat(8),       "Date of creation of PO.
               ekorg(4),       "Purchasing Organisation.
               ekgrp(3),       "Purchasing Group.
               x_data LIKE TABLE OF it_idata,
             END OF it_me21.
    DATA  :  x_idata LIKE LINE OF it_idata.
    DATA  :  v_delimit VALUE ','.
    DATA  :  v_indx(3) TYPE n.
    DATA  :  v_fnam(30) TYPE c.
    DATA  :  v_count TYPE n.
    DATA  :  v_ne TYPE i.
    DATA  :  v_ns TYPE i.
    *include bdcrecx1.
    INCLUDE zmm_incl_purchaseorderkb01.
                    Search help for file                                 *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_file.
    START-OF-SELECTION.
           To upload the data into line structure                        *
      CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
          filename = p_file
          filetype = 'DAT'
        TABLES
          data_tab = it_dummy.
        Processing the data from line structure to internal tables       *
      REFRESH:it_me21.
      CLEAR  :it_me21.
      LOOP AT it_dummy.
        IF it_dummy-dummy+0(01) = 'H'.
          v_indx = v_indx + 1.
          CLEAR   it_idata.
          REFRESH it_idata.
          CLEAR   it_me21-x_data.
          REFRESH it_me21-x_data.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_me21-lifnr
                                           it_me21-bsart
                                           it_me21-bedat
                                           it_me21-ekorg
                                           it_me21-ekgrp.
          APPEND it_me21.
        ELSEIF it_dummy-dummy+0(01) = 'L'.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_idata-ematn
                                           it_idata-menge
                                           it_idata-netpr
                                           it_idata-werks
                                           it_idata-ebelp.
          APPEND it_idata TO it_me21-x_data.
          MODIFY it_me21 INDEX v_indx.
        ENDIF.
      ENDLOOP.
                    To open the group                                    *
      PERFORM open_group.
            To populate the bdcdata table for header data                *
      LOOP AT it_me21.
        v_count = v_count + 1.
        REFRESH it_bdcdata.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0100',
                                        ' ' 'BDC_CURSOR'  'EKKO-LIFNR',
                                        ' ' 'BDC_OKCODE'  '/00',
                                        ' ' 'EKKO-LIFNR'  it_me21-lifnr,
                                        ' ' 'RM06E-BSART' it_me21-bsart,
                                        ' ' 'RM06E-BEDAT' it_me21-bedat,
                                        ' ' 'EKKO-EKORG'  it_me21-ekorg,
                                        ' ' 'EKKO-EKGRP'  it_me21-ekgrp,
                                        ' ' 'RM06E-LPEIN' 'T'.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0120',
                                        ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                        ' ' 'BDC_OKCODE'  '/00'.
        MOVE 1 TO v_indx.
    *-----To populate the bdcdata table for line item data
        LOOP AT it_me21-x_data INTO x_idata.
          CONCATENATE 'EKPO-EMATN(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-ematn.
          CONCATENATE 'EKPO-MENGE(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-menge.
          CONCATENATE 'EKPO-NETPR(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-netpr.
          CONCATENATE 'EKPO-WERKS(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-werks.
          v_indx = v_indx + 1.
          PERFORM subr_bdc_table USING:  'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '/00'.
        ENDLOOP.
        PERFORM subr_bdc_table USING:    'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '=BU'.
        PERFORM bdc_transaction USING 'ME21'.
      ENDLOOP.
      PERFORM close_group.
                      End of selection event                             *
    END-OF-SELECTION.
      IF session NE 'X'.
    *-----To display the successful records
        WRITE :/10  text-001.          "Sucess records
        WRITE :/10  SY-ULINE(20).
        SKIP.
        IF it_sucess IS INITIAL.
          WRITE :/  text-002.
        ELSE.
          WRITE :/   text-008,          "Total number of Succesful records
                  35 v_ns.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_sucess.
          WRITE:/4  it_sucess-lifnr,
                 17 it_sucess-tabix CENTERED,
                 30 it_sucess-sucess_rec.
        ENDLOOP.
        SKIP.
    *-----To display the erroneous records
        WRITE:/10   text-006.          "Error Records
        WRITE:/10   SY-ULINE(17).
        SKIP.
        IF it_error IS INITIAL.
          WRITE:/   text-007.          "No error records
        ELSE.
          WRITE:/   text-009,          "Total number of erroneous records
                 35 v_ne.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_error.
          WRITE:/4  it_error-lifnr,
                 17 it_error-tabix CENTERED,
                 30 it_error-error_rec.
        ENDLOOP.
        REFRESH it_sucess.
        REFRESH it_error.
      ENDIF.
    CODE IN INCLUDE.
    Include           ZMM_INCL_PURCHASEORDERKB01
    DATA:   it_BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
    DATA:   it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA:   E_GROUP_OPENED.
    *-----Internal table to store sucess records
    DATA:BEGIN OF it_sucess OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           sucess_rec(125),
         END OF it_sucess.
    DATA: g_mess(125) type c.
    *-----Internal table to store error records
    DATA:BEGIN OF it_error OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           error_rec(125),
         END OF it_error.
           Selection screen
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS session RADIOBUTTON GROUP ctu.  "create session
    SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.
    SELECTION-SCREEN POSITION 45.
    PARAMETERS ctu RADIOBUTTON GROUP ctu.     "call transaction
    SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS group(12).                      "group name of session
    SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.
    "A: show all dynpros
    "E: show dynpro on error only
    "N: do not display dynpro
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS: keep AS CHECKBOX.       "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS e_group(12).             "group name of error-session
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS: e_keep AS CHECKBOX.     "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN END OF LINE.
    PARAMETERS:p_file LIKE rlgrap-filename.
      at selection screen                                                *
    AT SELECTION-SCREEN.
    group and user must be filled for create session
      IF SESSION = 'X' AND
         GROUP = SPACE. "OR USER = SPACE.
        MESSAGE E613(MS).
      ENDIF.
      create batchinput session                                          *
    FORM OPEN_GROUP.
      IF SESSION = 'X'.
        SKIP.
        WRITE: /(20) 'Create group'(I01), GROUP.
        SKIP.
    *----open batchinput group
        CALL FUNCTION 'BDC_OPEN_GROUP'
          EXPORTING
            CLIENT = SY-MANDT
            GROUP  = GROUP
            USER   = sy-uname.
        WRITE:/(30) 'BDC_OPEN_GROUP'(I02),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ENDIF.
    ENDFORM.                    "OPEN_GROUP
      end batchinput session                                             *
    FORM CLOSE_GROUP.
      IF SESSION = 'X'.
    *------close batchinput group
        CALL FUNCTION 'BDC_CLOSE_GROUP'.
        WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ELSE.
        IF E_GROUP_OPENED = 'X'.
          CALL FUNCTION 'BDC_CLOSE_GROUP'.
          WRITE: /.
          WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
        ENDIF.
      ENDIF.
    ENDFORM.                    "CLOSE_GROUP
           Start new transaction according to parameters                 *
    FORM BDC_TRANSACTION USING TCODE TYPE ANY.
      DATA: L_SUBRC LIKE SY-SUBRC.
    *------batch input session
      IF SESSION = 'X'.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
        WRITE: / 'BDC_INSERT'(I03),
                 TCODE,
                 'returncode:'(I05),
                 SY-SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ELSE.
        REFRESH it_MESSTAB.
        CALL TRANSACTION TCODE USING it_BDCDATA
                         MODE   CTUMODE
                         UPDATE CUPDATE
                         MESSAGES INTO it_MESSTAB.
        L_SUBRC = SY-SUBRC.
        WRITE: / 'CALL_TRANSACTION',
                 TCODE,
                 'returncode:'(I05),
                 L_SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ENDIF.
      Message handling for Call Transaction                              *
      perform subr_mess_hand using g_mess.
    *-----Erzeugen fehlermappe
      IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
        IF E_GROUP_OPENED = ' '.
          CALL FUNCTION 'BDC_OPEN_GROUP'
            EXPORTING
              CLIENT = SY-MANDT
              GROUP  = E_GROUP
              USER   = sy-uname
              KEEP   = E_KEEP.
          E_GROUP_OPENED = 'X'.
        ENDIF.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
      ENDIF.
      REFRESH it_BDCDATA.
    ENDFORM.                    "BDC_TRANSACTION
         Form  subr_bdc_table                                            *
          text
         -->P_0220   text                                                *
         -->P_0221   text                                                *
         -->P_0222   text                                                *
    FORM subr_bdc_table  USING      VALUE(P_0220) TYPE ANY
                                    VALUE(P_0221) TYPE ANY
                                    VALUE(P_0222) TYPE ANY.
      CLEAR it_bdcdata.
      IF P_0220 = ' '.
        CLEAR it_bdcdata.
        it_bdcdata-fnam     = P_0221.
        it_bdcdata-fval     = P_0222.
        APPEND it_bdcdata.
      ELSE.
        it_bdcdata-dynbegin = P_0220.
        it_bdcdata-program  = P_0221.
        it_bdcdata-dynpro   = P_0222.
        APPEND it_bdcdata.
      ENDIF.
    ENDFORM.                    " subr_bdc_table
         Form  subr_mess_hand                                            *
          text                                                           *
         -->P_G_MESS  text                                               *
    FORM subr_mess_hand USING  P_G_MESS TYPE ANY.
      LOOP AT IT_MESSTAB.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID     = it_messtab-msgid
            LANG   = it_messtab-msgspra
            NO     = it_messtab-msgnr
            v1     = it_messtab-msgv1
            v2     = it_messtab-msgv2
          IMPORTING
            MSG    = P_G_MESS
          EXCEPTIONS
            OTHERS = 0.
        CASE it_messtab-msgtyp.
          when 'E'.
            it_error-error_rec   =  P_G_MESS.
            it_error-lifnr       =  it_me21-lifnr.
            it_error-tabix       =  v_count.
            APPEND IT_ERROR.
          when 'S'.
            it_sucess-sucess_rec =  P_G_MESS.
            it_sucess-lifnr      =  it_me21-lifnr.
            it_sucess-tabix      =  v_count.
            APPEND IT_SUCESS.
        endcase.
      ENDLOOP.
      Describe table it_sucess lines v_ns.
      Describe table it_error  lines v_ne.
    ENDFORM.                    " subr_mess_hand

  • MODULE POOLL  PROGRAMING WITH TABLE CONTROL

    hi all,
    in table control update, edit, delete
    please give me the solution
    in pai
    where i can write
    module
    regards

    *&  Include           ZPPCONFI01
    *&      Module  USER_COMMAND_9100  INPUT
          text
    module USER_COMMAND_9100 input.
    CASE OK_CODE.
    WHEN 'FCAST'.
    *&& CASTING
    if sy-uname = 'PTEAM' .
    CALL SCREEN 9200.
    else.
    message 'No Autorization' type 'I'.
    endif.
    CLEAR OK_CODE.
    *&& INSPECTION
    WHEN 'FINSP'.
    if sy-uname = 'PTEAM' .
    CALL SCREEN 9300.
    else.
    message 'No Autorization' type 'I'.
    endif.
    CLEAR OK_CODE.
    WHEN 'FGLAZ'.
    if sy-uname = 'PTEAM' .
    CALL SCREEN 9400.
    else.
    message 'No Autorization' type 'I'.
    endif.
    CLEAR OK_CODE.
    WHEN 'FMOUL'.
    if sy-uname = 'PTEAM' .
    CALL SCREEN 9500.
    else.
    message 'No Autorization' type 'I'.
    endif.
    CLEAR OK_CODE.
    when 'BACK'.
    CLEAR : I_TAB, I_TAB1.
    REFRESH : I_TAB1.
    leave program.
    ENDCASE.
    endmodule.                 " USER_COMMAND_9100  INPUT
    *&      Module  USER_COMMAND_9200  INPUT
          text
    module USER_COMMAND_9200 input.
    CASE OK_CODE1.
      WHEN 'GO'.
    *ROUTINE GETDATA
       PERFORM GETDATA.
       CLEAR OK_CODE1.
    *&& BACK
    when 'CANCEL'.
        leave program.
      WHEN 'BACK'.
       CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,AFKO-GSTRP,flag,count,qtyflag.
       REFRESH : I_TAB1.
       LEAVE TO SCREEN 9100.
    *&& SAVE   INSERT DATA TO ZPPT_CONFIRM
      WHEN 'SAVE'.
        data : co type C,
               del type c.
      LOOP AT I_TAB1.
      IF I_TAB1-LMNGA  IS NOT INITIAL OR
         I_TAB1-LMNGA1 IS NOT INITIAL. "OR
        I_TAB1-XMNGA  IS NOT INITIAL.
            if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'P'.
             MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER at Line' sy-tabix.
              continue.
            endif.
            clear : v_charg.
                        SELECT single CHARG FROM MCHB into v_charg
                                    WHERE LGORT = '1080'
                                      AND LVORM <> 'X'
                                      AND CHARG = I_TAB1-CHARG.
                    if sy-subrc <> 0.
                    Message 'Enter correct batch' type 'W'.
                    continue.
                    endif.
         IF I_TAB1-LMNGA IS NOT INITIAL AND
            I_TAB1-CHARG IS INITIAL.
            MESSAGE 'Enter Batch' TYPE 'S'.
         ELSE.
    *&& ACTIVITY 10
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '103'.            "MRP CONTROLLER
       ZPPT_CONFIRM-VORNR  = '0010'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.     "ORDER NO
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH23'.          "ORDER TYPE
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.   "MATERIAL
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
       ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA.    "MOULD FILL
      ZPPT_CONFIRM-GRUND     = I_TAB1-GRUND. "reason for scrap
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.        "supervioser name
       ZPPT_CONFIRM-CHARG     = I_TAB1-CHARG. "batch
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.    "PRODUCT SCHEDULER
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       sno = sno + 1.
       ZPPT_CONFIRM-sno     = sno.
       INSERT ZPPT_CONFIRM.
       CLEAR  ZPPT_CONFIRM.
    *&& ACTIVITY 20
       if I_TAB1-XMNGA1 <> space.
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '103'.
       ZPPT_CONFIRM-VORNR  = '0020'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH23'.
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA1.   "SCARP
         if I_TAB1-XMNGA1 is NOT INITIAL.
       ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
       ZPPT_CONFIRM-GRUND     = '0001'. "reason for scrap
         CO = 'X'.
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.
      ZPPT_CONFIRM-CHARG     = I_TAB1-CHARG.
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       sno = sno + 1.
       ZPPT_CONFIRM-sno     = sno.
       INSERT ZPPT_CONFIRM.
       CLEAR  ZPPT_CONFIRM.
       endif.
       if I_TAB1-XMNGA2 <> space.
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '103'.
       ZPPT_CONFIRM-VORNR  = '0020'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH23'.
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
      ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA2.   "SCARP
         if I_TAB1-XMNGA2 is NOT INITIAL.
         ZPPT_CONFIRM-GRUND     = '0002'. "reason for scrap
         if co <> 'X'.
          ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
          co = 'X'.
         endif.
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.
      ZPPT_CONFIRM-CHARG     = I_TAB1-CHARG.
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       sno = sno + 1.
       ZPPT_CONFIRM-sno     = sno.
       INSERT ZPPT_CONFIRM.
       CLEAR  ZPPT_CONFIRM.
       endif.
       if I_TAB1-XMNGA3 <> space.
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '103'.
       ZPPT_CONFIRM-VORNR  = '0020'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH23'.
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
      ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA3.   "SCARP
         if I_TAB1-XMNGA3 is NOT INITIAL.
       ZPPT_CONFIRM-GRUND     = '0003'. "reason for scrap
         if co <> 'X'.
          ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
          co = 'X'.
         endif.
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.
      ZPPT_CONFIRM-CHARG     = I_TAB1-CHARG.
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       sno = sno + 1.
       ZPPT_CONFIRM-sno     = sno.
       INSERT ZPPT_CONFIRM.
       CLEAR  ZPPT_CONFIRM.
       endif.
       if I_TAB1-XMNGA4 <> space.
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '103'.
       ZPPT_CONFIRM-VORNR  = '0020'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH23'.
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
      ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA4.   "SCARP
         if I_TAB1-XMNGA4 is NOT INITIAL.
       ZPPT_CONFIRM-GRUND     = '0004'. "reason for scrap
         if co <> 'X'.
          ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA1.  "CARRYOUT
          co = 'X'.
         endif.
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.
      ZPPT_CONFIRM-CHARG     = I_TAB1-CHARG.
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       sno = sno + 1.
       ZPPT_CONFIRM-sno     = sno.
       INSERT ZPPT_CONFIRM.
       CLEAR  ZPPT_CONFIRM.
       endif.
       IF SY-SUBRC = 0.
          DELETE TABLE I_TAB1 FROM I_TAB1.
       ENDIF.
       CLEAR  ZPPT_CONFIRM.
      ENDIF.
      ENDIF.
      ENDLOOP.
      CLEAR OK_CODE1.
    ENDCASE.
    endmodule.                 " USER_COMMAND_9200  INPUT
    *&      Form  GETDATA
          text
    -->  p1        text
    <--  p2        text
    form GETDATA .
    refresh i_tab1.
          V_DATE = AFKO-GSTRP.
      SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP  INTO (V_PRDSCHED, V_ZHODNO)
                          WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
        if sy-subrc = 0.
            CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
              EXPORTING
                iv_date                   = V_DATE
             IMPORTING
               EV_MONTH_BEGIN_DATE       = sdate
               EV_MONTH_END_DATE         = edate.
            SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
                                                         AND ENDDA  = '99991231'.
          IF AFKO-PLNBEZ IS NOT INITIAL.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         COBJNR = DOBJNR
                   WHERE A~FEVOR = V_PRDSCHED
                     AND A~PLNBEZ = AFKO-PLNBEZ
                     AND A~DISPO = '103'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH23'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
            IF SY-SUBRC = 0.
              ccontrol-lines = sy-dbcnt.
              LOOP AT I_TAB1.
                SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
                                   WHERE MATKL = I_TAB1-PLNBEZ+0(7)
                                     AND SPRAS = 'E'.
                 IF SY-SUBRC = 0.
                    MODIFY I_TAB1 FROM I_TAB1.
                    CLEAR I_TAB1.
                 ENDIF.
              ENDLOOP.
            ENDIF.
          ELSE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         COBJNR = DOBJNR
                   WHERE A~FEVOR = V_PRDSCHED
                     AND A~DISPO = '103'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH23'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
            IF SY-SUBRC = 0.
              ccontrol-lines = sy-dbcnt.
              LOOP AT I_TAB1.
                SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
                                   WHERE MATKL = I_TAB1-PLNBEZ+0(7)
                                     AND SPRAS = 'E'.
                 IF SY-SUBRC = 0.
                    MODIFY I_TAB1 FROM I_TAB1.
                    CLEAR I_TAB1.
                 ENDIF.
              ENDLOOP.
            ENDIF.
            ENDIF.
            endif.
    sort i_tab1 by plnbez.
    endform.                    " GETDATA
    *&      Module  F4HELPONCHARG  INPUT
          text
    module F4HELPONCHARG input.
    CLEAR : V_MATNR, V_STEPL, V_STLNR, V_IDNRK.
    CLEAR : C_TOPLINE.
    C_TOPLINE = CCONTROL-TOP_LINE - 1.
    CALL FUNCTION 'DYNP_GET_STEPL'
    IMPORTING
       POVSTEPL              = v_stepl
    EXCEPTIONS
       STEPL_NOT_FOUND       = 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.
    v_stepl = v_stepl +  C_TOPLINE.
    READ TABLE I_TAB1 INDEX v_stepl.
    IF SY-SUBRC = 0.
    SELECT SINGLE STLNR FROM AFKO INTO V_STLNR
                       WHERE AUFNR = I_TAB1-AUFNR.
           IF SY-SUBRC = 0.
              V_MATNR = I_TAB1-PLNBEZ+0(7).
              CONCATENATE V_MATNR '%' INTO V_MATNR.
              SELECT SINGLE IDNRK FROM STPO INTO V_IDNRK
                                 WHERE STLNR = V_STLNR
                                   AND IDNRK LIKE V_MATNR.
                     IF SY-SUBRC = 0.
                        SELECT CHARG FROM MCHB INTO TABLE I_BATCH
                                    WHERE MATNR LIKE V_IDNRK
                                      AND LGORT = '1080'
                                      AND WERKS = T001W-WERKS
                                      AND LVORM <> 'X'.
                     ENDIF.
           ENDIF.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
      DDIC_STRUCTURE         = ' '
        retfield               = 'I_TAB-CHARG'
      PVALKEY                = ' '
       DYNPPROG               = SY-REPID
       DYNPNR                 = SY-DYNNR
       DYNPROFIELD            = 'CHARG'
      STEPL                  = 0
       WINDOW_TITLE           = 'BATCH'
      VALUE                  = ' '
       VALUE_ORG              = 'S'
      MULTIPLE_CHOICE        = ' '
      DISPLAY                = ' '
      CALLBACK_PROGRAM       = ' '
      CALLBACK_FORM          = ' '
      MARK_TAB               =
    IMPORTING
      USER_RESET             =
      tables
        value_tab              = I_BATCH
      FIELD_TAB              =
      RETURN_TAB             =
      DYNPFLD_MAPPING        =
    EXCEPTIONS
      PARAMETER_ERROR        = 1
      NO_VALUES_FOUND        = 2
      OTHERS                 = 3
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.
    endmodule.                 " F4HELPONCHARG  INPUT
    *&      Module  F4HELPONGRUND  INPUT
          text
    module F4HELPONGRUND input.
    SELECT GRUND GRDTX FROM TRUGT
                       INTO CORRESPONDING FIELDS OF TABLE I_TRUG
                      WHERE WERKS = T001W-WERKS
                        AND SPRAS = 'E'.
    IF SY-SUBRC = 0.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
      DDIC_STRUCTURE         = ' '
        retfield               = 'I_TAB-GRUND'
      PVALKEY                = ' '
       DYNPPROG               = SY-REPID
       DYNPNR                 = SY-DYNNR
       DYNPROFIELD            = 'GRUND'
      STEPL                  = 1
       WINDOW_TITLE           = 'Variance'
      VALUE                  = ' '
        VALUE_ORG              = 'S'
      MULTIPLE_CHOICE        = ' '
      DISPLAY                = ' '
      CALLBACK_PROGRAM       = ' '
      CALLBACK_FORM          = ' '
      MARK_TAB               =
    IMPORTING
      USER_RESET             =
      tables
        value_tab              = I_TRUG
      FIELD_TAB              =
      RETURN_TAB             =
      DYNPFLD_MAPPING        =
    EXCEPTIONS
      PARAMETER_ERROR        = 1
      NO_VALUES_FOUND        = 2
      OTHERS                 = 3
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.
    endmodule.                 " F4HELPONGRUND  INPUT
    *&      Module  MOVE_DATA_TO_INTERNALTAB  INPUT
          text
    module MOVE_DATA_TO_INTERNALTAB input.
    CLEAR I_TAB1.
    CLEAR ZWERKS_HR.
    IF T001W-WERKS = '1102'.
    ZWERKS_HR = '1200'.
    ENDIF.
           if I_TAB-EMPNO <> space and I_TAB-EMPNO+0(1) <> 'P'.
             MESSAGE I991(ZMESSAGE) with 'ENTER POTTER NUMBER'.
    ***BREAK-POINT.
             FLAG = 'X'.
             COUNT = ( CCONTROL-CURRENT_LINE - CCONTROL-Top_line ) + 1.
             continue.
           endif.
    IF I_TAB-EMPNO IS NOT INITIAL.
      SELECT SINGLE ENAME FROM PA0001 INTO I_TAB-ENAME
                         WHERE PERNR = I_TAB-EMPNO.
         SELECT SINGLE A~ENAME
                       A~PERNR
               A~WERKS
               B~USRID
                 INTO CORRESPONDING FIELDS OF TABLE I_FINAL
                  INTO (I_TAB-ENAME,I_TAB-pernr)
                  FROM PA0001 AS A
                  JOIN PA0105 AS B ON APERNR = BPERNR
                 WHERE B~USRID <> SPACE
                   AND B~USRID = I_TAB-EMPNO
                   AND A~endda = '99991231'
                   AND A~WERKS = ZWERKS_HR
                   AND ( B~SUBTY = 'POTT' OR
                       B~SUBTY = 'INSP' OR
                       B~SUBTY = 'GLAZ' OR
                       B~SUBTY = 'STOP' OR
                       B~SUBTY = 'SORT' ).
                       IF SY-SUBRC <> 0.
                       clear : I_TAB-ENAME,I_TAB-pernr.
                       ENDIF.
    ENDIF.
    MOVE-CORRESPONDING I_TAB TO I_TAB1.
    MODIFY I_TAB1 FROM I_TAB1 INDEX CCONTROL-CURRENT_LINE.
    endmodule.                 " MOVE_DATA_TO_INTERNALTAB  INPUT
    *&      Module  USER_COMMAND_9300  INPUT
          text
    module USER_COMMAND_9300 input.
    CASE OK_CODE2.
    *&& GET DATA FOR INSPECTION
    WHEN 'GO'.
    PERFORM GETINSDATA.
    CLEAR OK_CODE2.
    *&& BACK
      WHEN 'BACK'.
       CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,
               AFKO-GSTRP,PA0105-USRID,FLAG,COUNT,COUNT1.
       REFRESH : I_TAB1.
       LEAVE TO SCREEN 9100.
    *&& SAVE   INSERT DATA TO ZPPT_CONFIRM
      WHEN 'SAVE'.
      LOOP AT I_TAB1.
      IF I_TAB1-LMNGA  IS NOT INITIAL OR
         I_TAB1-XMNGA  IS NOT INITIAL.
           if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'I'.
             MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER at Line' sy-tabix.
             continue.
           endif.
    *&& ACTIVITY 10
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '110'.            "MRP CONTROLLER
       ZPPT_CONFIRM-VORNR  = '0010'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.     "ORDER NO
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH24'.          "ORDER TYPE
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.   "MATERIAL
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
       ZPPT_CONFIRM-rcpts  = I_TAB1-rcpts.
       ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA.    "MOULD FILL
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA.    "SCRAP
         if I_TAB1-XMNGA is NOT INITIAL.
       ZPPT_CONFIRM-GRUND     = I_TAB1-GRUND. "reason for scrap
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.        "supervioser name
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.    "PRODUCT SCHEDULER
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       INSERT ZPPT_CONFIRM.
       IF SY-SUBRC = 0.
          DELETE TABLE I_TAB1 FROM I_TAB1.
       ENDIF.
       CLEAR  ZPPT_CONFIRM.
      ENDIF.
      ENDLOOP.
    CLEAR : OK_CODE2.
    ENDCASE.
    endmodule.                 " USER_COMMAND_9300  INPUT
    *&      Form  GETINSDATA
          text
    -->  p1        text
    <--  p2        text
    form GETINSDATA .
    refresh i_tab1.
          V_DATE = AFKO-GSTRP.
    SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP  INTO (V_PRDSCHED, V_ZHODNO)
                         WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       if sy-subrc = 0.
            CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
              EXPORTING
                iv_date                   = V_DATE
             IMPORTING
               EV_MONTH_BEGIN_DATE       = sdate
               EV_MONTH_END_DATE         = edate.
           SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
                                                        AND ENDDA  = '99991231'.
           IF AFKO-PLNBEZ IS NOT INITIAL.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         COBJNR = DOBJNR
                   WHERE
                         A~PLNBEZ = AFKO-PLNBEZ
                     AND A~DISPO = '110'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
            IF SY-SUBRC = 0.
              icontrol-lines = sy-dbcnt.
              LOOP AT I_TAB1.
                SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
                                   WHERE MATKL = I_TAB1-PLNBEZ+0(7)
                                     AND SPRAS = 'E'.
                 IF SY-SUBRC = 0.
                    MODIFY I_TAB1 FROM I_TAB1.
                    CLEAR I_TAB1.
                 ENDIF.
              ENDLOOP.
            ENDIF.
          ELSE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         COBJNR = DOBJNR
                   WHERE
                  A~FEVOR = V_PRDSCHED
                         A~DISPO = '110'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
            IF SY-SUBRC = 0.
              icontrol-lines = sy-dbcnt.
              LOOP AT I_TAB1.
                SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
                                   WHERE MATKL = I_TAB1-PLNBEZ+0(7)
                                     AND SPRAS = 'E'.
                 IF SY-SUBRC = 0.
                    MODIFY I_TAB1 FROM I_TAB1.
                    CLEAR I_TAB1.
                 ENDIF.
              ENDLOOP.
            ENDIF.
          ENDIF.
           endif.
    sort i_tab1 by plnbez.
    endform.                    " GETINSDATA
    *&      Module  USER_COMMAND_9400  INPUT
          text
    module USER_COMMAND_9400 input.
    CASE OK_CODE3.
    *&& GET DATA FOR INSPECTION
    WHEN 'GO'.
    PERFORM GETGLADATA.
    CLEAR OK_CODE3.
    *&& BACK
      WHEN 'BACK'.
       CLEAR : I_TAB, I_TAB1,AFKO-PLNBEZ,ZMATKL,T001W-WERKS,
               AFKO-GSTRP,PA0105-USRID,flag,count.
       REFRESH : I_TAB1.
       LEAVE TO SCREEN 9100.
    *&& SAVE   INSERT DATA TO ZPPT_CONFIRM
      WHEN 'SAVE'.
      LOOP AT I_TAB1.
      IF I_TAB1-LMNGA  IS NOT INITIAL OR
         I_TAB1-XMNGA  IS NOT INITIAL.
           if I_TAB1-EMPNO <> space and I_TAB1-EMPNO+0(1) <> 'G'.
             MESSAGE I991(ZMESSAGE) with 'ENTER GLAZER NUMBER at Line' sy-tabix.
             continue.
           endif.
    *&& ACTIVITY 10
       ZPPT_CONFIRM-CDATE  = SY-DATUM.
       ZPPT_CONFIRM-CTIME  = SY-UZEIT.
       ZPPT_CONFIRM-PDATE  = afko-gstrp.
       ZPPT_CONFIRM-WERKS  = T001W-WERKS.
       ZPPT_CONFIRM-DISPO  = '104'.            "MRP CONTROLLER
       ZPPT_CONFIRM-VORNR  = '0010'.
       ZPPT_CONFIRM-AUFNR  = I_TAB1-AUFNR.     "ORDER NO
       ZPPT_CONFIRM-ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
       ZPPT_CONFIRM-AUFART = 'ZH24'.          "ORDER TYPE
       ZPPT_CONFIRM-MATNR  = I_TAB1-PLNBEZ.   "MATERIAL
       ZPPT_CONFIRM-MAKTX  = I_TAB1-WGBEZ.
       ZPPT_CONFIRM-GAMNG  = I_TAB1-GAMNG.
       ZPPT_CONFIRM-LMNGA  = I_TAB1-LMNGA.    "MOULD FILL
       ZPPT_CONFIRM-XMNGA  = I_TAB1-XMNGA.    "SCRAP
         if I_TAB1-XMNGA is NOT INITIAL.
       ZPPT_CONFIRM-GRUND     = I_TAB1-GRUND. "reason for scrap
         endif.
       ZPPT_CONFIRM-ZSUPNAME  = SNAME.        "supervioser name
       ZPPT_CONFIRM-ZHODNO    = V_ZHODNO.
       ZPPT_CONFIRM-FEVOR     = V_PRDSCHED.    "PRODUCT SCHEDULER
       ZPPT_CONFIRM-PERNR     = I_TAB1-pernr.
       ZPPT_CONFIRM-ENAME     = I_TAB1-ENAME.
       ZPPT_CONFIRM-ZUSER     = sy-uname.
       INSERT ZPPT_CONFIRM.
       IF SY-SUBRC = 0.
          DELETE TABLE I_TAB1 FROM I_TAB1.
       ENDIF.
       CLEAR  ZPPT_CONFIRM.
      ENDIF.
      ENDLOOP.
      CLEAR : OK_CODE3.
    ENDCASE.
    endmodule.                 " USER_COMMAND_9400  INPUT
    *&      Form  GETGLADATA
          text
    -->  p1        text
    <--  p2        text
    form GETGLADATA .
    refresh i_tab1.
    CLEAR : V_MATNR1.
    CONCATENATE '%' V_COLOR '%' INTO V_MATNR1.
          V_DATE = AFKO-GSTRP.
    SELECT SINGLE FEVOR ZHODNO FROM ZPP_SUP_MRP  INTO (V_PRDSCHED, V_ZHODNO)
                         WHERE ZSUPNO = ZPP_SUP_MRP-ZSUPNO.
        if sy-subrc = 0.
            CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
              EXPORTING
                iv_date                   = V_DATE
             IMPORTING
               EV_MONTH_BEGIN_DATE       = sdate
               EV_MONTH_END_DATE         = edate.
           SELECT SINGLE ENAME FROM PA0001 INTO SNAME WHERE PERNR = ZPP_SUP_MRP-ZSUPNO
                                                        AND ENDDA  = '99991231'.
            if ZMATKL <> SPACE and AFKO-PLNBEZ <> SPACE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AMANDT = BMANDT
                    AND  AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AMANDT = CMANDT
                    AND  AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         CMANDT = DMANDT
                    AND  COBJNR = DOBJNR
                   JOIN  MARA AS E ON
                         AMANDT = EMANDT
                     AND APLNBEZ = EMATNR
                   WHERE
                          A~PLNBEZ = AFKO-PLNBEZ
                        A~PLNBEZ LIKE V_MATNR1
                     AND A~DISPO = '104'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'
                     AND E~MATKL = ZMATKL.
              elseIF ZMATKL <> SPACE and AFKO-PLNBEZ = SPACE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AMANDT = BMANDT
                    AND  AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AMANDT = CMANDT
                    AND  AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         CMANDT = DMANDT
                    AND  COBJNR = DOBJNR
                   JOIN  MARA AS E ON
                         AMANDT = EMANDT
                     AND APLNBEZ = EMATNR
                   WHERE
                  A~FEVOR = V_PRDSCHED
                         A~PLNBEZ LIKE V_MATNR1
                     AND A~DISPO = '104'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'
                     AND E~MATKL = ZMATKL.
              elseIF ZMATKL = SPACE and AFKO-PLNBEZ <> SPACE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AMANDT = BMANDT
                    AND  AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AMANDT = CMANDT
                    AND  AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         CMANDT = DMANDT
                    AND  COBJNR = DOBJNR
                  JOIN  MARA AS E ON
                        AMANDT = EMANDT
                    AND APLNBEZ = EMATNR
                   WHERE
                          A~PLNBEZ = AFKO-PLNBEZ
                        A~PLNBEZ LIKE V_MATNR1
                     AND A~DISPO = '104'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
                    AND E~MATKL = ZMATKL.
              elseIF ZMATKL = SPACE and AFKO-PLNBEZ = SPACE.
            select A~AUFNR
                   A~PLNBEZ
                   A~GAMNG
                   INTO corresponding fields of TABLE I_TAB1
                   FROM  AFKO AS A
                   JOIN  AFPO AS B ON
                         AMANDT = BMANDT
                    AND  AAUFNR = BAUFNR
                   JOIN  AUFK AS C ON
                         AMANDT = CMANDT
                    AND  AAUFNR = CAUFNR
                   JOIN  JEST AS D ON
                         CMANDT = DMANDT
                    AND  COBJNR = DOBJNR
                  JOIN  MARA AS E ON
                        AMANDT = EMANDT
                    AND APLNBEZ = EMATNR
                   WHERE
                         A~PLNBEZ = AFKO-PLNBEZ
                         A~PLNBEZ LIKE V_MATNR1
                     AND A~DISPO = '104'
                     AND A~GLTRP between sdate and edate
                     AND B~DAUAT = 'ZH24'
                     AND B~PWERK = T001W-WERKS
                     AND D~STAT  = 'I0002'
                     AND D~INACT <> 'X'.
                    AND E~MATKL = ZMATKL.
              endif.
            IF SY-SUBRC = 0.
              gcontrol-lines = sy-dbcnt.
              LOOP AT I_TAB1.
                SELECT SINGLE WGBEZ FROM T023T INTO I_TAB1-WGBEZ
                                   WHERE MATKL = I_TAB1-PLNBEZ+0(7)
                                     AND SPRAS = 'E'.
                 IF SY-SUBRC = 0.
                    MODIFY I_TAB1 FROM I_TAB1.
                    CLEAR I_TAB1.
                 ENDIF.
              ENDLOOP.
            ENDIF.
            endif.
    sort i_tab1 by plnbez.
    endform.                    " GETGLADATA
    *&      Module  MOVE_DATA_TO_INTERNALTAB_INS  INPUT
          text
    module MOVE_DATA_TO_INTERNALTAB_INS input.
    CLEAR I_TAB1.
    CLEAR ZWERKS_HR.
    IF T001W-WERKS = '1102'.
    ZWERKS_HR = '1200'.
    ENDIF.
            if I_TAB-EMPNO <> space and I_TAB-EMPNO+0(1) <> 'I'.
              MESSAGE I991(ZMESSAGE) with 'ENTER INSPECTOR NUMBER'.
    *BREAK-POINT.
              FLAG = 'X'.
              COUNT = ICONTROL-CURRENT_LINE.
             continue.
            endif.
    IF I_TAB-EMPNO IS NOT INITIAL.
      SELECT SINGLE ENAME FROM PA0001 INTO I_TAB-ENAME
                         WHERE PERNR = I_TAB-EMPNO.
         SELECT SINGLE A~ENAME
                       A~PERNR
               A~WERKS
               B~USRID
                 INTO CORRESPONDING FIELDS OF TABLE I_FINAL
                  INTO (I_TAB-ENAME,I_TAB-pernr)
                  FROM PA0001 AS A
                  JOIN PA0105 AS B ON APERNR = BPERNR
                 WHERE B~USRID <> SPACE
                   AND B~USRID = I_TAB-EMPNO
                   AND A~endda = '99991231'
                   AND A~WERKS = ZWERKS_HR
                   AND ( B~SUBTY = 'POTT' OR
                       B~SUBTY = 'INSP' OR
                       B~SUBTY = 'GLAZ' OR
                       B~SUBTY = 'STOP' OR
                       B~SUBTY = 'SORT' ).
                       IF SY-SUBRC <> 0.
                       clear : I_TAB-ENAME,I_TAB-pernr.
                       ENDIF.
    ENDIF.
    MOVE-CORRESPONDING I_TAB TO I_TAB1.
    MODIFY I_TAB1 FROM I_TAB1 INDEX ICONTROL-CURRENT_LINE.
    endmodule.                 " MOVE_DATA_TO_INTERNALTAB_INS  INPUT
    *&      Module  MOVE_DATA_TO_INTERNALTAB_GLA  INPUT
          text
    module MOVE_DATA_TO_INTERNALTAB_GLA input.
    CLEAR I_TAB1.
    CLEAR ZWERKS_HR.

  • Batch Input with transaction ME58

    Hello SAP:
    We are trying to do a Batch Input Session with transaction ME58
    (Creating Service Entry Sheets) by using a FrameWork Order.
    After the batch input selects the purchase order and mark all
    the requisitions related with that order and confirms the selection,
    the system calls program SAPLMLSR dynpro 400, where the tab "Basic
    Data" appears and the error "Make an entry in all required fields"
    (00 055) is displayed. Althought we had put all the obligatory
    fields required by the Batch Input in that particular
    screen SAPLMLSR - 400 (we also tried with subscreen 410), the fields
    indicated in the Batch Input were lost.
    It seems the flow control of the Batch Input is lost because of the
    error message 00 055.
    Thank You - And we will be waiting for Your answer.
    Frinee Paredes

    Hi Christian!!
    The error that is displayed is because of a mandatory field, the problem is that it appears before the screen is displayed, I mean the validation occurs before I can input data.
    It's very interesting what you said about enjoy transactions and there might be the problem, a few minutes ago, while debugging transaction ME58, I found that it calls function module MS_SERVICE_ENTRY2, which calls transaction ML81N, which I think is an enjoy sap transaction, I guess I'm in a big trouble because I've already looked for a BAPI and it seems there aren't any.
    If you like to reproduce the error you could record transaction ME58 with transaction SHDB,you would need a framework order (FO) for the selection screen and purchase requisitions (PO) created asociated to that FO.
    What I want to do with ME58 is to run a job periodically which creates service entry sheets with the FO and PR as input.
    Thank you very much!!
    Frinee

  • Screen enhancement with table control

    Dears,
    I'm using enhancement IWO10018 to add a new tab on IW32 screen. I've added a table control to this tab. The problem is that retreived data from database do not appear on the table and it is appeared as empty fields. When tring to add any other input/output field on the same subscreen the data appear correctly on it! Please advise
    PROCESS BEFORE OUTPUT.
      MODULE fill_req_itab.
      LOOP AT req_itab
        WITH CONTROL serv_req_tab.
        MODULE move_to_screen.
      ENDLOOP.
    MODULE fill_req_itab OUTPUT.
      CLEAR: req_itab[].
      SELECT * FROM zcs_serv_req
        INTO CORRESPONDING FIELDS OF TABLE req_itab
        WHERE aufnr = order_no.
      DESCRIBE TABLE req_itab LINES serv_req_tab-lines.
    ENDMODULE.                 " FILL_REQ_ITAB  OUTPUT
    MODULE move_to_screen OUTPUT.
      MOVE-CORRESPONDING req_itab TO zcs_serv_req.
    ENDMODULE.                 " MOVE_TO_SCREEN  OUTPUT
    *&  Include           ZXWOCTOP
    DATA: mark TYPE c LENGTH 1.
    CONTROLS: serv_req_tab TYPE TABLEVIEW USING SCREEN '0900'.
    DATA: req_itab TYPE TABLE OF zcs_serv_req WITH HEADER LINE,
          zcs_serv_req LIKE LINE OF req_itab,
          order_no TYPE aufnr.

    Thanks a lot for your reply...
    I've added the below code on the mentioned include and I've commented it on the PBO but I still have the same problem. On debug mode I can see that required data retreived correctly till end.
    *&  Include           ZXWOCU15
    order_no = sap_caufvd_imp-aufnr.
    CLEAR: req_itab[].
      SELECT * FROM zcs_serv_req
        INTO CORRESPONDING FIELDS OF TABLE req_itab
        WHERE aufnr = order_no.

  • Take input from table control using wizard

    Dear experts,
    I am trying to take data from table control into internal table using wizard.
    In main report program i defined the internal table and used wizard after  that.
    I could see internal table there and i picked the fields i wanted.
    Also i defined a workarea of same time.Further i made a push button.
    In PAI user command module i specified
    loop at itab. (one used for table control data)
    endloop.
    Here i put break point and find that no data is coming from grid.
    With wizard what additional i have to do ?

    Hi
    PROCESS AFTER INPUT.
    MODULE USER_COMMAND_2209.  "do processing
    loop at itab.
       module UPDATE.                           "read from tbl ctl into db table using wa.
    endloop.
    DATA:   itab TYPE TABLE OF YSTUDENT WITH HEADER LINE,
                WA LIKE LINE OF ITAB.
    MODULE UPDATE INPUT.
    WA-ID = YSTUDENT-ID.
    WA-NAME = YSTUDENT-NAME.
    INSERT YSTUDENT FROM WA.  
    ENDMODULE.
    Instead of Insert into table, you can write: APPEND WA TO ITAB.    
    Also YSTUDENT-ID is the name of the column in your tbl ctrl.
    Make sure your PBO also loops thro the itab:
    loop at itab with control tab1.
    endloop.
    Hope this helps
    Regards,
    Jayanthi.K

  • Error when displaying a field on Screen with Table Control

    Hi,
    It is going to 'Dump' when I am trying to display data on the screen with the help of Table Control. From the dump, What I have observed is , there is a field 'ZTSV_FSRDATA-ANZFEHLER'. If this field has negative value, then it is going to 'Dump' saying that the length is not enough. If it has a positive value then it is working fine. But the type of the field in the Internal table & on the screen are same.
    Please help me to resolve this error.
    I am posting here the Dump message also:
    A conversion error occurred while the program was trying todisplay data on the screen.
    The ABAP output field and the screen field may not have the same format.
    Some field types require more characters on the screen thanin the ABAP program. For example, a date field on a screen needstwo characters more than it would in the program. When attempting to display the date on the screen, an error will occur that triggers the error message.
    Thanks,
    Sreenivas Reddy Maddi.

    Hi Sreenivas,
       Refer this thread:
    how to display negative values in a screen field of a screen
    Re: negative values not allowed
    Regards,
    Sampath

Maybe you are looking for

  • Com.sap.esi.uddi.sr.api.exceptions.SRExceptionerror code: null detail messa

    Dear All, When we try to publish a Web Service using Service Registry, following error appears, even though my user has the roles UDDI_Admin and SERVICE_REGISTRY_READ_WRITE com.sap.esi.uddi.sr.api.exceptions.SRExceptionerror code: null detail message

  • Control delivery type for mvt type 313

    Hi Regarding SLOC to SLOC transfer postings, I have a couple of questions: Using movement type 313 (unr. use stock SLOC to SLOC) in our SAP system automatically creates a delivery in the background. Where can I configure what delivery type I would li

  • Apache FOP getClassLoader problem

    I have loaded Apache FOP 1.1 into an 11g database, and a driver class to retrieve XML/XSLT and save PDF as CLOBs. When I try to execute this in the DB, I get ORA-29532: Java call terminated by uncaught Java exception: javax.xml.transform.TransformerE

  • Faster Full-Name Viewing in List View - does not always work

    A little while ago I discovered the Tip (from the Apple Pro tips page) on how one can view the entire file name when in List View and the name is too long to view without widening the column. One can just roll the mouse over it and wait. But, one can

  • Keeping ur libary sraight...

    Has anyone else had problems with itunes seperating your CD's that u import into 2 or more different albums with the same album i.e all same artist same album title. Songs 1-8 under 1 album artwork then song 9 on different album but same album artwor