Tuesday 20 September 2011

Calling routine from script(changing more then one value)



 PERFORM FORM_GET_DATA IN PROGRAM ZEL01I0001
                                                    USING &LTAP-LGNUM&
                                                    USING &LTAP-TANUM&
                                                    USING &LTAP-TAPOS&
                                                    USING &LTAP-MATNR&
                                                    USING &LTAP-VSOLA&
                                                    USING &LTAP-ALTME&
                                                    USING &LTAP-VSOLM&
                                                    USING &LTAP-MEINS&
                                                    CHANGING &LDF_MAKTX&
                                                    CHANGING &LDF_QTY&
                                                    CHANGING &LDF_UNIT&
ENDPERFORM


FORM form_get_data TABLES  prt_in_tab  STRUCTURE itcsy      "#EC CALLED
                           prt_out_tab STRUCTURE itcsy.

*  TABLES: LTAP,                                             "#EC NEEDED
*          MARA.                                             "#EC NEEDED

  TYPESBEGIN OF LTS_LTAP,
            LGNUM TYPE LTAP-LGNUM,
            TANUM TYPE LTAP-TANUM,
            TAPOS TYPE LTAP-TAPOS,
            MAKTX TYPE MAKTX,"MARA-MAKTX,
          END OF LTS_LTAP.

  DATA: LDT_LTAP TYPE TABLE OF LTS_LTAP,
        LDS_LTAP TYPE LTS_LTAP,                             "ZSEL01002,
        LDF_LGNUM LIKE LTAP-LGNUM,
        LDF_LGNUM_TMP LIKE LTAP-LGNUM,
        LDF_TANUM LIKE LTAP-TANUM,
        LDF_TANUM_TMP LIKE LTAP-TANUM,
        LDF_TAPOS LIKE LTAP-TAPOS,
        LDF_MATNR LIKE LTAP-MATNR,
        LDF_VSOLA LIKE LTAP-VSOLA,
        LDF_ALTME LIKE LTAP-ALTME,
        LDF_VSOLM LIKE LTAP-VSOLM,
        LDF_MEINS LIKE LTAP-MEINS,
        Ldf_LVSME type MLGN-LVSME.


  DATA: LDS_IN_TAB LIKE LINE OF PRT_IN_TAB,
        LDF_CONST(13type c,"LTAP-VSOLM,
        LDF_CONST1(3type c"LTAP-MEINS.
*
*  FIELD-SYMBOLS: <FS_FIELD>,
*                 <FS_LTAP> LIKE LDT_LTAP,
*                 <FS_OUT_TAB> TYPE ITCSY.

  CONSTANTS: LCF_LGNUM(11TYPE C VALUE 'LTAP-LGNUM',     "WAREHOUSE NUMBER
             LCF_TANUM(11TYPE C VALUE 'LTAP-TANUM',     "TO NUMBER
             LCF_TAPOS(11TYPE C VALUE 'LTAP-TAPOS',     "TO ORDER ITEM
             LCF_MATNR(11type c value 'LTAP-MATNR',
             LCF_VSOLA(11TYPE C VALUE 'LTAP-VSOLA',
             LCF_ALTME(11TYPE C VALUE 'LTAP-ALTME',
             LCF_VSOLM(11TYPE C VALUE 'LTAP-VSOLM',
             LCF_MEINS(11TYPE C VALUE 'LTAP-MEINS',
             LCF_MAKTX(11TYPE C VALUE 'LDF_MAKTX',     "MATERIAL DESCRIPTION
             LCF_QTY(9type c value    'LDF_QTY',        "MATERIAL QUANTITY
             LCF_UNIT(10type c value  'LDF_UNIT'.       "MATERIAL UNIT

  LOOP AT PRT_IN_TAB INTO LDS_IN_TAB.
    CASE LDS_IN_TAB-NAME.
      WHEN LCF_LGNUM.
        MOVE LDS_IN_TAB-VALUE TO LDF_LGNUM.
      WHEN LCF_TANUM.
        MOVE LDS_IN_TAB-VALUE TO LDF_TANUM.
      WHEN LCF_TAPOS.
        MOVE LDS_IN_TAB-VALUE TO LDF_TAPOS.
      WHEN LCF_MATNR.
        MOVE LDS_IN_TAB-VALUE TO LDF_MATNR.
      WHEN LCF_VSOLA.
        MOVE LDS_IN_TAB-VALUE TO LDF_VSOLA.
      WHEN LCF_ALTME.
        MOVE LDS_IN_TAB-VALUE TO LDF_ALTME.
      WHEN LCF_VSOLM.
        MOVE LDS_IN_TAB-VALUE TO LDF_VSOLM.
      WHEN LCF_MEINS.
        MOVE LDS_IN_TAB-VALUE TO LDF_MEINS.

    ENDCASE.
  ENDLOOP.

  IF LDF_LGNUM <> LDF_LGNUM_TMP OR LDF_TANUM <> LDF_TANUM_TMP.
    SELECT          "Choose the records pertaining to the TO number passed
    LGNUM
    TANUM
    TAPOS
    M~MAKTX
    INTO CORRESPONDING FIELDS OF TABLE LDT_LTAP
     FROM
       LTAP AS L
       JOIN MAKT AS M
         ON M~MATNR EQ L~MATNR
          AND M~SPRAS EQ 'E'"SY-LANGU
           WHERE L~TANUM EQ LDF_TANUM
            AND L~LGNUM EQ LDF_LGNUM.
  ENDIF.
  MOVE LDF_LGNUM TO LDF_LGNUM_TMP.
  MOVE LDF_TANUM TO LDF_TANUM_TMP.

 clear: Ldf_LVSME,
        LDF_CONST,
        LDF_CONST1.

  select LVSME    "sandep changes
     from MLGN
     into Ldf_LVSME
     where  MATNR eq ldf_matnr and
            LGNUM eq LDF_LGNUM.
  ENDSELECT.
  IF LDF_LVSME EQ ' '.
    MOVE : LDF_VSOLM TO LDF_CONST,
           LDF_MEINS TO LDF_CONST1.
  ELSE.
    MOVE : LDF_VSOLA TO LDF_CONST,
          LDF_ALTME TO LDF_CONST1.
 ENDIF.

CONDENSE: LDF_CONST,
          LDF_CONST1.

    READ TABLE LDT_LTAP WITH KEY
      TANUM = LDF_TANUM
      TAPOS = LDF_TAPOS
      INTO LDS_LTAP.

    IF SY-SUBRC = 0.
      LOOP AT PRT_OUT_TAB INTO LDS_IN_TAB.
        CASE LDS_IN_TAB.
          WHEN LCF_MAKTX.
            MOVE LDS_LTAP-MAKTX TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
          WHEN LCF_QTY.
            MOVE LDF_CONST TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
          WHEN LCF_UNIT.
            MOVE LDF_CONST1 TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
        ENDCASE.
      ENDLOOP.
    ENDIF.

  ENDFORM.                    "form_get_data

No comments:

Post a Comment