ABAP 工单保存时自动赋值AFPO和AUFK

17 篇文章 0 订阅

在这里插入图片描述
DATA:LV_NUM TYPE NUMC2,
lv_STRING_IN type c length 2,
lv_STRING_out type n length 10,
lv_HTYPE TYPE dd01v-datatype,
lv_CHARG TYPE STRING.

 IF SY-TCODE = 'CO01' or SY-TCODE = 'CO40' or SY-TCODE = 'CO41'.

   SELECT SINGLE MTART   FROM  MARA WHERE MATNR = @caufvd-STLBEZ INTO @DATA(LV_MTART).


   SELECT SINGLE PIPREFIX   FROM  ZMMT001 WHERE MATNR = @caufvd-STLBEZ INTO @DATA(LV_PIPREFIX).
   SELECT SINGLE  SUBSTRING( max( ZZZ_BATCH ),5,2 )   FROM  AUFK INNER JOIN afpo on AUFK~aufnr = afpo~aufnr WHERE afpo~MATNR = @caufvd-STLBEZ INTO @DATA(lv_ZZZ_BATCH).


   CALL FUNCTION 'NUMERIC_CHECK'
     EXPORTING
       STRING_IN       = lv_ZZZ_BATCH
    IMPORTING
      STRING_OUT       = lv_STRING_out
      HTYPE            = lv_HTYPE
             .

  IF lv_HTYPE = 'NUMC'.

** IF CL_ABAP_MATCHER=>MATCHES(
** PATTERN = ‘^(-?[1-9]\d*(.\d*[1-9])?)|(-?0.\d*[1-9])$’
** TEXT = ‘1.01’ ) = ABAP_TRUE.

     LV_NUM = lv_ZZZ_BATCH + 1.
     caufvd-ZZZ_BATCH = LV_PIPREFIX+0(2) && SY-DATUM+2(2) && LV_NUM .
     lv_CHARG = caufvd-ZZZ_BATCH.

     CALL FUNCTION 'CALCULATE_HASH_FOR_CHAR'
       EXPORTING
        ALG                  = 'SHA2'
         DATA                 = lv_CHARG
  •        LENGTH               = 0
         IMPORTING
           HASHSTRING           =  lv_CHARG
    
  •      EXCEPTIONS
    
  •        UNKNOWN_ALG          = 1
    
  •        PARAM_ERROR          = 2
    
  •        INTERNAL_ERROR       = 3
    
  •        OTHERS               = 4
                 .
       IF SY-SUBRC <> 0.
    
  • Implement suitable error handling here
    ENDIF.

       "截取8位成批次
       afpod-CHARG  = lv_CHARG+0(8).
    
     ENDIF.
    

*… für den Änderungsvergleich sind nur die Datenbankstrukturen relevant
MOVE-CORRESPONDING caufvd_old TO *caufv.
MOVE-CORRESPONDING caufvd TO caufv.

IF *caufv NE caufv.
  cfl = yx.
  PERFORM caufvd_put(saplcobh) USING c_index-index caufvd.
  • Checkerich für Auftragskonsistenz mit vergebener Nummer aktualisieren

  • Wegen objnr auch für externe Nummernvergabe
    IF caufvd-autyp EQ auftragstyp-inst.
    PERFORM vb_check_consistency_caufvd(saplcoih) USING caufvd.
    ENDIF.

  • Netzplan und temporäre Nummernswitch:
    
  • ggfs. Switch im VSDI (Projektversion) ebenfalls notwendig
    IF caufv-autyp     EQ auftragstyp-netw AND
       *caufv-objnr(2) EQ 'TM'.
      PERFORM switch_caufvd_in_vsdi(saplvsdi) USING
                                   caufvd caufvd_old.
    ENDIF.
    

    ENDIF.

    TYPES: BEGIN OF p_afpod_typ,

         CHARG TYPE afpo-CHARG,
    

“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”" " " "\SE:(27) Enhancement Exit EHP_CO_ZV_ORDER_POST_03, Enhancement PS_ST_EHP3_SFWS_SC_COZV_THREE, Start, Enhancement ZPP_SET_ZZZ_BATCH, Function Module CO_ZV_SRDER
END OF p_afpod_typ.

DATA: p_afpod TYPE p_afpod_typ.

free MEMORY id ‘ZPP_CO01_SET_CHARG’.

p_afpod-CHARG = lv_CHARG+0(8).

EXPORT p_afpod = p_afpod TO MEMORY ID ‘ZPP_CO01_SET_CHARG’.

  • Auftragsposition nachlesen
    CALL FUNCTION ‘CO_BI_AFPO_READ_WITH_KEY’
    EXPORTING
    aufnr_act = caufvd-aufnr
    IMPORTING
    afpod_exp = afpod
    EXCEPTIONS
    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.

    ENDIF.

在这里插入图片描述
TYPES: BEGIN OF P_AFPOD_TYP,

          CHARG TYPE AFPO-CHARG,

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4) Function Module CO_BI_AFPO_READ_WITH_KEY, End, Enhancement ZPP_SET_ZZZ_BATCH_02, Typ P_AFPOD_TYP, End                                             S
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4) Function Module CO_BI_AFPO_READ_WITH_KEY, End, Enhancement ZPP_SET_ZZZ_BATCH_02, Typ P_AFPOD_TYP, End                                             S
        END OF P_AFPOD_TYP.

 DATA: P_AFPOD TYPE P_AFPOD_TYP.

 IF  SY-TCODE = 'CO01' OR SY-TCODE = 'CO40' OR SY-TCODE = 'CO41' .


   IMPORT P_AFPOD = P_AFPOD FROM MEMORY ID 'ZPP_CO01_SET_CHARG'.

   IF P_AFPOD-CHARG IS NOT INITIAL.


     LOOP AT AFPO_BT ASSIGNING FIELD-SYMBOL(<FS_AFPO_BT>).

       <FS_AFPO_BT>-CHARG = P_AFPOD-CHARG.

     ENDLOOP.

      free  MEMORY id 'ZPP_CO01_SET_CHARG'.

   ENDIF.

 ENDIF.
  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值